export default class AppError extends Error {
  statusCode: number;
  status: string;
  isOperation: boolean;

  constructor(statusCode: number, message: string) {
    super(message);
    this.statusCode = statusCode;
    this.status = `${statusCode}`.startsWith('4') ? 'fail' : 'error';
    // 可以操作的错误，防止编程错误
    this.isOperation = true;
    // 当一个新对象被创建，调用构造函数后，该函数调用将不会出现在 堆栈跟踪 中，并且不会污染它
    // 隐藏掉 Error 内的内部调用信息，为了不向使用者暴露自定义Error类的内部细节
    // 高版本的 node 不添加也不会暴露了
    Error.captureStackTrace(this, this.constructor);
  }
};

